﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;

namespace RS.Echarts.Models
{
    public class LegendSymbolStyle
    {
        /// <summary>
        /// 图形颜色，用于设置图例标记图形的填充颜色。
        /// 可以使用常见的颜色表示方式，如十六进制颜色码（例如 "#FF0000" 表示红色）、RGB函数（例如 "rgb(255, 0, 0)"）、RGBA函数（例如 "rgba(255, 0, 0, 0.5)"）等。
        /// </summary>
        public Color Color { get; set; }

        /// <summary>
        /// 图形边框颜色，用于设置图例标记图形边框的颜色。
        /// 支持的颜色格式与Color属性相同，例如 "#000000" 表示黑色边框等。
        /// </summary>
        public Color BorderColor { get; set; }

        /// <summary>
        /// 图形边框宽度，以像素为单位，设置图例标记图形边框的粗细程度。
        /// 例如，设置为1表示边框宽度为1像素，设置为2则边框更粗，宽度为2像素等。
        /// </summary>
        public int BorderWidth { get; set; }

        /// <summary>
        /// 图形边框类型，可选值为'solid'（实线）、'dashed'（虚线）、'dotted'（点线），用于定义图例标记图形边框线的样式。
        /// </summary>
        public string BorderType { get; set; }

        /// <summary>
        /// 图形边框虚线偏移量，在边框类型为虚线（'dashed'）或点线（'dotted'）时，用于设置虚线的起始偏移位置，单位为像素。
        /// </summary>
        public int BorderDashOffset { get; set; }

        /// <summary>
        /// 图形边框端点样式，可选值为'butt'（方形端点）、'round'（圆形端点）、'square'（方形端点，比butt稍长），用于定义边框线端点的形状。
        /// </summary>
        public string BorderCap { get; set; }

        /// <summary>
        /// 图形边框连接处样式，可选值为'bevel'（斜角连接）、'round'（圆角连接）、'miter'（斜接），用于定义边框线连接角的样式。
        /// </summary>
        public string BorderJoin { get; set; }

        /// <summary>
        /// 图形边框斜接限制，用于控制边框线斜接处的长度限制，具体作用与图形绘制相关，通常是一个大于0的数值。
        /// </summary>
        public int BorderMiterLimit { get; set; }

        /// <summary>
        /// 图形阴影的模糊大小，用于设置图例标记图形阴影的模糊程度，数值越大阴影越模糊，单位为像素。
        /// 需同时结合ShadowColor、ShadowOffsetX和ShadowOffsetY等属性来完整呈现阴影效果。
        /// </summary>
        public int ShadowBlur { get; set; }

        /// <summary>
        /// 图形阴影颜色，用于设置图例标记图形阴影的颜色，支持的颜色格式与Color属性相同。
        /// 注意：此配置项生效的前提是，设置了相应的显示条件（如Show为true等）。
        /// </summary>
        public Color ShadowColor { get; set; }

        /// <summary>
        /// 图形阴影水平方向上的偏移距离，以像素为单位，正值表示阴影向右偏移，负值表示向左偏移，用于控制阴影在水平方向的位置。
        /// 注意：此配置项生效的前提是，设置了相应的显示条件（如Show为true等）。
        /// </summary>
        public int ShadowOffsetX { get; set; }

        /// <summary>
        /// 图形阴影垂直方向上的偏移距离，以像素为单位，正值表示阴影向下偏移，负值表示向上偏移，用于控制阴影在垂直方向的位置。
        /// 注意：此配置项生效的前提是，设置了相应的显示条件（如Show为true等）。
        /// </summary>
        public int ShadowOffsetY { get; set; }

        /// <summary>
        /// 图形的透明度，取值范围是0到1，0表示完全透明，1表示完全不透明，用于控制图例标记图形整体的透明程度。
        /// </summary>
        public double Opacity { get; set; }

        /// <summary>
        /// 图形是否填充颜色，默认值为true，表示填充图形颜色。若设置为false，则图形内部为空，只有边框（如果有设置边框的话）显示。
        /// </summary>
        public bool Fill { get; set; } = true;

        /// <summary>
        /// 图形是否显示，默认值为true，表示显示该图形。若设置为false，则图形不显示，可用于根据条件动态控制图例标记图形的显示与否。
        /// </summary>
        public bool Show { get; set; } = true;
    }
}
